Skip to content

Add willamhou/hypervisor (no_std ARM64 bare-metal hypervisor)#510

Merged
BartMassey merged 2 commits into
rust-embedded:masterfrom
willamhou:add-hypervisor
Apr 15, 2026
Merged

Add willamhou/hypervisor (no_std ARM64 bare-metal hypervisor)#510
BartMassey merged 2 commits into
rust-embedded:masterfrom
willamhou:add-hypervisor

Conversation

@willamhou
Copy link
Copy Markdown

Summary

Adds willamhou/hypervisor to the Firmware projects section.

What it is: A bare-metal ARM64 Type-1 hypervisor written in no_std Rust with a single runtime dependency (fdt crate). Runs at EL2 on QEMU virt machine, boots Linux 6.12.12 to BusyBox shell with 4 vCPUs, virtio-blk storage, and virtio-net networking.

Key features:

  • no_std, no heap allocator crate — custom bump allocator, zero external runtime dependencies beyond fdt
  • ARM64 EL2 bare-metal: Stage-2 page tables, GICv3 trap-and-emulate, PSCI, preemptive scheduling
  • FF-A v1.1 Secure Partition Manager Core (SPMC) at S-EL2 with TF-A boot chain
  • Multi-VM support with VMID-tagged TLBs, L2 virtual switch
  • 457 test assertions across 34 test suites, CI via GitHub Actions
  • GitHub Codespaces support for one-click demo (make run boots and runs all tests)

Why it fits: There are currently no ARM64 hypervisors listed in awesome-embedded-rust. This project demonstrates no_std Rust for systems programming at the highest privilege level (EL2/S-EL2), complementing the existing firmware projects which target microcontrollers.

Copy link
Copy Markdown
Member

@BartMassey BartMassey left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well this is crazily cool: looks like an amazing piece of work. Please add the robot emoji 🤖 to indicate that the project contains AI code. I'm not clear what HW the project has been run on in addition to QEMU?

Copy link
Copy Markdown
Author

@willamhou willamhou left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the kind words! Added the 🤖 emoji.

Regarding hardware: currently QEMU virt machine only. The pKVM integration (35/35 E2E tests) runs through real TF-A firmware in QEMU with secure=on, but no physical ARM64 board yet. The main blocker is finding hardware with S-EL2 support (ARMv8.4+) and accessible JTAG — Pixel phones have pKVM but locked bootloaders. Planning to test on a development board (e.g. Arm FVP or N1SDP) as a next step.

Updated the description to clarify "QEMU-only" status.

Copy link
Copy Markdown
Member

@BartMassey BartMassey left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you very much!

@BartMassey BartMassey merged commit 56cafd1 into rust-embedded:master Apr 15, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants